from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.huggingface import HuggingFaceLLM

# 初始化一个HuggingFaceEmbedding对象，用于将文本转换为向量表示
embed_model = HuggingFaceEmbedding(
    # 指定了一个预训练的sentence-transformer 模型路径
    model_name='E:\AIModels\paraphrase\Ceceliachenen\paraphrase-multilingual-MiniLM-L12-v2'
)
# 将创建的嵌入模型赋值给全局设置的embed_model属性，这样在后续的索引构建过程中，就会使用这个模型
Settings.embed_model = embed_model

llm = HuggingFaceLLM(
    model_name='E:\AIModels\deepseek-ai\DeepSeek-R1-Distill-Qwen-1___5B',
    tokenizer_name='E:\AIModels\deepseek-ai\DeepSeek-R1-Distill-Qwen-1___5B',
    model_kwargs={'trust_remote_code': True},
    tokenizer_kwargs={'trust_remote_code': True}
)

# 设置全局的llm属性，这样在索引查询时会使用这个模型
Settings.llm = llm

# 从指定目录读取文档，将数据加载到内存
documents = SimpleDirectoryReader(r'data').load_data()
print('doc:', documents)
# 创建一个VectorStoreIndex，并使用之前加载的文档来构建向量索引
# 此索引将文档转换为向量，并存储这些向量（内存）以便快速索引
index = VectorStoreIndex.from_documents(documents)
# 创建一个查询引擎，这个引擎可以接收查询并返回相关文档的响应
query_engine = index.as_query_engine()
rsp = query_engine.query('你叫什么名字？')
print('rsp:', rsp)
